package com.ibeifeng.crm.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.UUID;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.context.MessageSource;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

public abstract class AbstractDo {
	/**
	 * 专门负责数据的输出，可以输出各种数据，主要用于Ajax处理上
	 * @param response
	 * @param value
	 */
	public void print(HttpServletResponse response,Object value) {
		try {
			response.getWriter().print(value);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	

	@Resource
	private MessageSource msgSource; // 表示此对象直接引用配置好的类对象（根据类型匹配）

	/**
	 * 根据指定的key的信息进行资源数据的读取控制
	 * @param msgKey
	 *            表示要读取的资源文件的key的内容
	 * @return 表示资源对应的内容
	 */
	public String getValue(String msgKey, Object... args) {
		return this.msgSource.getMessage(msgKey, args, Locale.getDefault());
	}
	/**
	 * 设置跳转后所需要的相关的提示信息以及自动跳转路径的内容
	 * @param mav
	 * @param msgKey
	 * @param urlKey
	 */
	public void setMsgAndUrl(ModelAndView mav,String msgKey,String urlKey) {
		mav.addObject("msg", this.getValue(msgKey)) ;
		mav.addObject("url", this.getValue(urlKey)) ;
	}

	@InitBinder
	public void initBinder(WebDataBinder binder) { // 方法名称自己随便写
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		// 本方法的处理指的是追加有一个自定义的转换编辑器，如果遇见的操作目标类型为java.util.Date类
		// 则使用定义好的SimpleDateFormat类来进行格式化处理，并且允许此参数的内容为空
		binder.registerCustomEditor(java.util.Date.class, new CustomDateEditor(sdf, true));
	}
}
